package org.dromara.hm.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotNull;
import org.apache.poi.hpsf.Decimal;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serial;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 销售订单对象 hm_sale_order
 *
 * @author zy Hu
 * @date 2024-12-15
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hm_sale_order")
public class HmSaleOrder extends BaseEntity {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 销售记录id
     */
    @TableId(value = "sale_id")
    private Long saleId;

    /**
     * 销售产品id
     */
    private Long saleProductId;
    /**
     * 销售产品名称
     */
    private Long saleProductName;

    /**
     * 销售数量
     */
    private BigDecimal saleNum;

    /**
     * 销售店铺id
     */
    private Long saleDept;

    /**
     * 销售人员id
     */
    private Long saleUser;
    /**
     * 销售人员名称
     */
    private String saleUserName;

    /**
     * 客户id
     */
    private Long customerId;
    /**
     * 客户名称
     */
    private Long customerName;
    /**
     * 销售金额
     */
    private BigDecimal saleAmount;

    /**
     * 销售类型
     */
    private String saleType;


    /**
     * 是否为历史订单
     */
    private String isHistory;

    /**
     * 销售时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date saleOrderTime;


    /**
     * 状态
     */
    private String status;

    /**
     * 备注
     */
    private String remark;

    /**
     * 是否删除
     */
    @TableLogic
    private Boolean delFlag;

    /**
     * 是否评点
     */
    private String isGift;

    /**
     * 评点商品id
     */
    private String giftProductId;

    /**
     * 评点数量
     */
    private BigDecimal giftNum;

    /**
     * 累计退款金额
     */
    private BigDecimal refundAmount;

    /**
     * 可退金额上限(根据支付金额计算)
     */
    private BigDecimal maxRefundAmount;

    /**
     * 退款状态(0-无退款 1-部分退款 2-全额退款)
     */
    private Integer refundStatus;

    /**
     * 累计退货数量
     */
    private BigDecimal returnTotalNum;

    /**
     * 退货状态(0-无退货 1-退货中 2-部分退货 3-全部退货)
     */
    private Integer returnStatus;

    /**
     * 最近退货时间
     */
    private Date lastReturnTime;


}
